//
//  Extension+NSDate.swift
//  SHWeibo3
//
//  Created by teacher on 16/7/26.
//  Copyright © 2016年 teacher. All rights reserved.
//

import UIKit
private let df = NSDateFormatter()
// 日历类
private let calendar = NSCalendar.currentCalendar()
//  在ios开发中 对于 NSDateFormatter 和 NSCalendar.currentCalendar() 当创建或者销毁的时候 特别消耗性能
// 解决方案: swift中创建一个常量 如果在oc中 可以定义一个单例
extension NSDate {
    
    // class 定义类方法
    // 获取微博日期
    class func sinaDate(createAt: String) -> NSDate?{
        // 设置locate 指定地区 如果不指定 在真机中时间会有问题
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 指定格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        return df.dateFromString(createAt)
    }
    // 获取微博时间字符串
    var sinaDescripitionStr: String {

        // 定义一个属性 来判断是否是今年
        let isThisYear = sinaIsThisYear(self)
        // 是今年
        if isThisYear {
            //            - 如果是今天
            //                - 小于60秒 显示 刚刚
            //                    - 大于等于60秒且小于3600秒  显示 xx分钟前
            //                        - 大于等于3600秒  显示  xx小时前
            //
            //            - 如果是昨天
            //                            - 例如 2016-07-25 10:10:10  显示格式 昨天 10:10
            //
            //            - 如果是其他
            //            - 例如 2016-05-01 10:10:10  显示格式 05月01日 10:10
            // 是今天
            if calendar.isDateInToday(self) {
                // 获取当前时间和传入的微博时间差值
                let s = Int(NSDate().timeIntervalSinceDate(self))
                if s < 60 {
                    return "刚刚"
                }else if s >= 60 && s < 3600 {
                    return "\(s/60)分钟前"
                }else {
                    return "\(s/3600)小时前"
                }
            }else if calendar.isDateInYesterday(self) {
                // 是昨天
                df.dateFormat = "昨天 HH:mm"
                
            }else {
                // 其他
                df.dateFormat = "MM月dd日 HH:mm"
            }
        }else {
            // 不是今年
            //            - 例如 2015-01-01 10:10:10
            //            - 显示 格式: 2015年01月01日 10:10
            // 指定时间格式
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
        
        return df.stringFromDate(self)
    }
    
    
    // 判断微博时间是否是今年
    func sinaIsThisYear(sinaDate: NSDate) -> Bool{
        // 设置locate 指定地区 如果不指定 在真机中时间会有问题
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 指定时间格式
        df.dateFormat = "yyyy"
        // 获取当前的日期
        let currentDate = NSDate()
        // 微博日期字符串
        let sinaStr = df.stringFromDate(sinaDate)
        // 当前日期字符串
        let currentStr = df.stringFromDate(currentDate)
        return sinaStr == currentStr
    }
    
}
